package io;

import java.io.*;

/**
 * java将流分为两类，节点流和处理流
 * 节点流：也称为低级流。特点：流的另一端是明确的，通过他们知道数据从哪里来的或写到哪里去
 *             低级流也是真实负责搬运数据的流，读写一定是建立在他的基础上进行的。
 *  处理流：也称之为高级流，特点：不能独立存在其他流上，目的是当数据“流经”该流时
 *          对数据进行加工处理，简化我们的操作！
 * 实际开发时，我们经常串联一组高级流到一个低级流上，在读写数据的过程进行流水线式
 * 的加工，这个过程也称为“流的连接”这也是IO流的精髓所在！
 * 缓存流
 *    java.io.BufferedOutputStream和BufferedInputStream
 *    缓冲流是一种高级流，作用是提高读写数据的效率！
 *    缓冲流内部有一个字节数组，默认长度是8k。缓冲流读写数据时一定是将数据的读写方式转换为
 *    快读写来保证读写效率
 */
public class CopyDemo {
    public static void main(String[] args) throws IOException {
        FileInputStream fis=new FileInputStream("dei.dei.jpeg");
        BufferedInputStream bis=new BufferedInputStream(fis);
        FileOutputStream fos=new FileOutputStream("dei.dei.bui.jpeg");
        BufferedOutputStream bos=new BufferedOutputStream(fos);
        int d ;
        long start=System.currentTimeMillis();//执行方法的开始时间
        while ((d=bis.read())!=-1){
            bos.write(d);

        }
        long end=System.currentTimeMillis();
        System.out.println("搞定，耗时："+(end-start)+"ms" );
        bis.close();
        bos.close();
    }
}
